package com.fingard.dsp.bank.dbobj.receipt;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;

import com.fingard.constant.Format;
import com.fingard.dsp.bank.reqrespobj.transaction.Req7516HisTrans;
import com.fingard.dsp.bank.reqrespobj.transaction.detail.RetAtsTransDetail;
import com.fingard.util.DateHelper;

/**回单数据*/
public class ReceiptData {
	/**URID主键*/
	public long urid;
	/**回单唯一标识（在银行端的唯一标识（该账号的唯一），如招行的打印实例号）*/
	public String istNbr;
	/**回单关联号（回单编号）
     * 回单号必须唯一，上传文件根据回单编号来命名，如果重复会出现漏上传的情况
     * */
	public String receiptNo;
	/**业务参考号*/
	public String busRef;
	
	/**业务参考号2*/
	public String busRef2;
	/**业务参考号3*/
	public String busRef3;
	
	/**银行流水号*/
	public String bnkSeqNo;
	/**本方账号_必传*/
	public String ownAct;
	/**银行代码，如工行102*/
	public String bank;
	/**线路代码（来源渠道），如工行直联ICBC02*/
	public String srcSys;
	/**日期*/
	public int busDate;
	/**交易代码*/
	public String tranCode;
	/**回单类型*/
	public String receiptType;
	/**对方账号*/
	public String oppActNum;
	/**对方户名*/
	public String oppActName;
	/**交易方向  1-支出 2-收入*/
	public String moneyWay;
	/**币种_必传*/
	public String cur;
	/**金额*/
	public BigDecimal amount;
	/**用途*/
	public String purpose;
	/**摘要（含备注等）*/
	public String summary;
	/**凭证号码*/
	public String voucherNo;
	/**回单验证码*/
	public String chkCode;
	/**上传文件路径或标识（如上传到指定OSS的标识，或者上传至ftp的文件路径）*/
	public String upFile;
	/**回单文件--本地文件相对路径*/
	public String localFile;
	/**源文件路径*/
	public String srcFile;
	/**回单文件类型 1-PDF,2-图片*/
	public String fileType;
	/**下载状态：指从银行下载该回单文件的状态，1未下载；2已下载；3下载失败；4下载中*/
	public String downState;
	/**下载时间*/
	public Date downTime;
	/**下载信息，如果失败则为失败原因*/
	public String downInfo;
	/**上传状态：指文件从银行端下载完成后，上传至ftp或ats或oss或客制化文件服务的状态，1未上传；2已上传；3上传失败；4上传中*/
	public String upState;
	/**上传时间*/
	public Date upTime;
	/**上传信息，如果失败则为失败原因*/
	public String upInfo;
	/**推送状态：指文件上传完成后，回单数据推送至ats或客制化平台的状态，1未推送；2已推送；3推送失败；4推送中*/
	public String pushState;
	/**推送时间*/
	public Date pushTime;
	/**推送信息，如果失败则为失败原因*/
	public String pushInfo;
	/**创建时间*/
	public Date createdOn;
	/**最后修改时间*/
	public Date lastModifiedOn;
	/**版本号*/
	public int rowVersion;
	
	public ReceiptData(){
		this.downState = "1";
        this.upState = "1";
        this.pushState = "1";
	}
	
	/**从历史明细赋值*/
	public void fromTransDetail(Req7516HisTrans pReqTrans, RetAtsTransDetail pDetail){
		this.ownAct = pReqTrans.actNum;
        this.cur = pReqTrans.actCur;
        this.amount = new BigDecimal(pDetail.tranAmt);
        this.istNbr = pDetail.receiptNo;
        this.receiptNo = pDetail.receiptNo;
        this.busRef = pDetail.busRef;
        this.bnkSeqNo = pDetail.bnkSeqNo;
        this.bank = "105";
        this.busDate = Integer.parseInt(DateHelper.convertD10toD8(pDetail.tranDate));
        this.tranCode = pDetail.busType;
        this.moneyWay = pDetail.cdFlag;
        this.oppActNum = pDetail.recAccNum;
        this.oppActName = pDetail.recAccName;
        this.purpose = pDetail.usage;
        this.summary = pDetail.comment;
        
	}
	
	public void setBusDate(Date pDate){
		busDate = Integer.parseInt(Format.Date8Format.format(pDate));
	}
	
	public Date getBusDate() throws ParseException{
		return Format.Date8Format.parse(busDate+"");
	}
	/**yyyy*/
	public String getBusYear(){
		String year = busDate+"";
		return year.substring(0,4);
	}
	
	/**MM*/
	public String getBusMonth(){
		String year = busDate+"";
		return year.substring(4, 6);
	}
	
	/**dd*/
	public String getBusDay(){
		String year = busDate+"";
		return year.substring(6, 8);
	}
}
